package vista;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

import vista.listeners.BotonSalirJuego;

import controlador.StreetRoadApplication;
import controlador.Juego.ControladorImagenesJuego;

import modelo.Configuracion;
import modelo.escenario.Carrera;
import modelo.juego.Juego;
import algo3.core.Teclado;
import algo3.display.*;


public class VJuego extends Ventana {
	/*ATRIBUTOS*/
	private Juego 		juego;
	private JButton		salir_btn;
	
	private JTextField 	nombre_tf;
	private JTextField 	marcha_tf;
	private JTextField 	vel_tf;
	private JTextField 	rpm_tf;
	private JTextField 	msje_tf;
	private JTextField 	tiempo_tf;
	
	private CarreraCanvas carreraCanvas;
	
	private ControladorImagenesJuego contImagenesJuego;

	
	/*METODOS PUBLICOS*/
	public VJuego(JFrame frame, int width, int height) {
		super(frame,width,height);
		
		setFondo(Configuracion.PATH_IMAGENES + "topbar.png");
	
		carreraCanvas = new CarreraCanvas();
		
		salir_btn = new JButton("Salir");
		salir_btn.setBounds(0, 0, 110, 30);
		
		VistaUtils.decorarBoton(salir_btn);
		
		nombre_tf = new JTextField(StreetRoadApplication.getInstancia().getNombreUsuarioActual());
		nombre_tf.setBounds(200, 0, 200, 25);
		nombre_tf.setEnabled(false);
		
		marcha_tf = new JTextField("0");
		marcha_tf.setBounds(460, 0, 30, 25);
		marcha_tf.setEnabled(false);
		
		vel_tf = new JTextField("0 KM/H");
		vel_tf.setBounds(500, 0, 50, 25);
		vel_tf.setEnabled(false);
		
		rpm_tf = new JTextField("0 RPM");
		rpm_tf.setBounds(560, 0, 40, 25);
		rpm_tf.setEnabled(false);
		
		msje_tf = new JTextField("");
		msje_tf.setBounds(610, 0, 100, 25);
		msje_tf.setEnabled(false);
		
		tiempo_tf = new JTextField("00:00");
		tiempo_tf.setBounds(720, 0, 80, 25);
		tiempo_tf.setEnabled(false);
		
		
		mainPanel.add(carreraCanvas, 1);
		mainPanel.add(salir_btn, 2);
		mainPanel.add(nombre_tf, 2);
		mainPanel.add(marcha_tf, 2);
		mainPanel.add(vel_tf, 2);
		mainPanel.add(rpm_tf, 2);
		mainPanel.add(msje_tf, 2);
		mainPanel.add(tiempo_tf, 2);
		
		// Controladores principales
		salir_btn.addActionListener(new BotonSalirJuego());
		mainPanel.addKeyListener(Teclado.getInstancia());
		
		

	}
	
	public void inicializar(Juego juego) {
		this.juego = juego;
		carreraCanvas.inicializar(juego);
		contImagenesJuego = new ControladorImagenesJuego(juego, this);
		
	}
	
	
	public void dibujarCarrera() {

		carreraCanvas.dibujar();
		
		marcha_tf.setText(juego.getJugador().getAuto().getMarcha()+"");
		
		vel_tf.setText(Math.round(juego.getJugador().getVelocidad()) + " KM/H");
		
		rpm_tf.setText(Math.round(juego.getJugador().getRPM()) + " RPM");
		
		msje_tf.setText(juego.getCarrera().getMensaje());
		
		tiempo_tf.setText(juego.getTiempo()+"");
		
		if(juego.getCarrera().getEstado() == Carrera.JUGANDO) {
			mainPanel.requestFocusInWindow();
		}
		else {
						
		}
	}
	
	
	
	
	public void destroy() {
		contImagenesJuego.dejarDeObservarAlSujeto();
		mainPanel.removeKeyListener(Teclado.getInstancia());
		
		parentFrame.remove(mainPanel);
	}
	
	
	
}
